home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / utility < prev    next >
Text File  |  1995-03-31  |  5KB  |  112 lines

  1. From HP-48@VM1.NoDak.EDU Wed Sep  5 00:12:58 1990
  2. Received: from vm1.NoDak.edu by en.ecn.purdue.edu (5.61/1.27jrs)
  3.     id AA17265; Wed, 5 Sep 90 00:12:52 -0500
  4. Message-Id: <9009050512.AA17265@en.ecn.purdue.edu>
  5. Received: from NDSUVM1.BITNET by VM1.NoDak.EDU (IBM VM SMTP R1.2.1MX) with BSMTP id 2517; Wed, 05 Sep 90 00:12:27 CDT
  6. Received: from NDSUVM1.BITNET by NDSUVM1.BITNET (Mailer R2.07) with BSMTP id
  7.  2511; Wed, 05 Sep 90 00:12:25 CDT
  8. Date:         Wed, 5 Sep 90 00:12:07 CDT
  9. Reply-To: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
  10. Sender: HP-48 - HP-48sx Hand Held System <HP-48@VM1.NoDak.EDU>
  11. From: Juergen Koslowski <koslowj%MATH.KSU.EDU@VM1.NoDak.EDU>
  12. X-To:         HP-48@VM1.NoDak.EDU
  13. To: Multiple recipients of list HP-48 <HP-48@NDSUVM1>
  14. Status: OR
  15.  
  16. Here are some of my HP-28 utility programs, updated for the HP-48SX.
  17. You must have Bill Wickes' ASCII decoder program ASC/-> to turn the strings
  18. into programs after downloading them into your HP-48.
  19.  
  20. @ ad, run trough ASC\->
  21. %%HP: T(1)A(R)F(.);
  22. "D9D204B2A2B9691DBBF104B02CCD20D2000147174E714313317915D41C913314
  23. 1142164808CB2130B663"
  24.  
  25. @ vv, run trough ASC\->
  26. %%HP: T(1)A(R)F(.);
  27. "D9D2078BF1A3AC19C2A290DA1ED2A2DBBF1FC8C1B2130EA41"
  28.  
  29. @ pp, run trough ASC\->
  30. %%HP: T(1)A(R)F(.);
  31. "D9D20425D1FA45054450B21307522"
  32.  
  33. @ as, run trough ASC\->
  34. %%HP: T(1)A(R)F(.);
  35. "D9D2047A20C2A2050000B213076BA1B7FC1ED2A2DBBF13013239150C4232CCD2
  36. 0E1000147137179137145142164808CB21301A7F"
  37.  
  38. BRIEF DESCRIPTION
  39.  
  40. ad: takes the name of a recallable object from the stack and returns the
  41. object's absolute address; you then can use a peek routine to look at it, and
  42. a poke routine to modify it.
  43.  
  44. (Strangely enough, I have trouble finding some objects with the built-in
  45. memory browser. I am using an 128K expansion card as merged memory. Maybe
  46. the machine has not yet fully recovered from a big memory crash that required
  47. removal of the batteries. Even port 1, which at that time was used as
  48. independent memory, could no longer be read. Unfortunate consequence: to keep
  49. your back-ups safe, REMOVE THE CARD! :-()
  50.  
  51. vv: removes the outer angle brackets from a program to save 5 bytes; it expects
  52. a program in stack level 1 (so you can see whether the angle brackets are still
  53. there).
  54.  
  55. pp: is a version of PUT for programs; it requires a program in stack level 3,
  56. a position in level 1, and an object in level 1. Notice that finding the
  57. position of a certain instruction in a program can get complicated if branches
  58. are involved. It may be necessary to treat certain subprograms first, and
  59. then to move the whole subprogram into the final program.
  60.  
  61. The main purpose of this utility is to avothing thid expressions of the form
  62.  
  63.     #VWXYZ SYSEVAL
  64.  
  65. in my programs, I prefer to have the code ZYXWV directly there, which saves
  66. a lot of space. To obtain this code, usually displayed as some Externals
  67. (try to recall pp to the stack -- whoa!), I use the following assembler
  68.  
  69. as: assembles a single binary integer or a list of binary integers into
  70. code that can be put into (template) programs by pp.
  71.  
  72. EXAMPLE: to put the code ZYXWV into a position n of a program P, recall a
  73. template for P to the stack, enter the position (where you have some dummy
  74. instruction in the template for P), enter the hex number #VWXYZh on the stack
  75. and execute first as and then pp. Notice, the angle brackest do count when
  76. you determine the position. To enter inline machine code, you probably need
  77. a list of hex numbers as input for as.
  78.  
  79. Another observation: Have you ever wished to be able to recall the names
  80. of back-up objects to the stack, just like you can recall the names of
  81. ordinary objects by first pressing the quote key (row 3, column 1) and then
  82. the appropriate menu key? Aparently this is not possible, the back-up object is
  83. recalled to the stack, whether you press the quote key or not. In particular,
  84. if you call your archive file AUG21 as suggested in the Manual, you cannot see
  85. the last digit in the menu, and hence you may not remember whether you last
  86. backed up your machine on August 21, or 22 or ...?? There is a strange way out
  87. though: After pressing the Library command (orange up-arrow), and the menu key
  88. to select the port, try this: enter double colons (blue +), move the cursor
  89. one step to the right by pressing the right arrow key, and then hit the
  90. desired menu key, eg., the one displaying AUG2. Your command line will look
  91. like this:
  92.  
  93.     :: :n: AUG21
  94.  
  95. where n is the port number. Now hit ENTER to get the following display:
  96.  
  97.     : :n: AUG21
  98.  
  99. You now can PURGE the back-up object, or RECall it. STO produces an error
  100. message "Object In Use". The same error message appears, when you first
  101. recall the object to the stack, then get the funny name as described before,
  102. and then try to PURGE. The copy on the stack provides a pointer to the object
  103. you are about to PURGE, and the machine does not like this. Solution: use
  104. NEWOB after recalling the object. If you now create the funny name, you can
  105. PURGE successfully.
  106.  
  107. J"urgen Koslowski
  108. Department of Mathematics
  109. Kansas State University
  110. koslowj@math.ksu.edu
  111.  
  112.